# @Time : 2020/7/17 10:37
# @Author : Fioman 
# @Phone : 13149920693
"""
通过索引的方式,可以直接将各个通道从图像内提取出来.例如,针对Opencv内的BGR图像img,如下的语句中分别从中提取了B通道,G通道,R通道.
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
"""

import cv2 as cv
import numpy as np

lena = cv.imread("lenaColor.png", cv.IMREAD_COLOR)
cv.imshow("lena1", lena)

b = lena[:, :, 0]
g = lena[:, :, 1]
r = lena[:, :, 2]

cv.imshow("B", b)
cv.imshow("G", g)
cv.imshow("R", r)

lena[:, :, 0] = 0
cv.imshow("lenaB=0", lena)

lena[:, :, 1] = 0
cv.imshow("lenaBG=0", lena)

cv.waitKey(0)
cv.destroyAllWindows()

# 使用函数split进行拆分
lena = cv.imread("lenaColor.png", cv.IMREAD_COLOR)
b, g, r = cv.split(lena)
cv.imshow("B", b)
cv.imshow("G", g)
cv.imshow("R", r)

"""
通道合并:
通道合并是通道拆分的逆过程,通过合并通道可以将三个通道的灰度图像构成一幅彩色图像.
cv.merge()可以实现图像的通道的合并,例如有B通道图像b,G通道图像g,R通道图像r.使用函数cv.merge()可以将这三个通道合并为一幅BGR的
三通道彩色图像.
cv.merge([b,g,r])
"""

lena = cv.imread("lenaColor.png", cv.IMREAD_COLOR)
b, g, r = cv.split(lena)
bgr = cv.merge([b, g, r])
rgb = cv.merge([r, g, b])

cv.imshow("lena", lena)
cv.imshow("bgr", bgr)
cv.imshow("rgb", rgb)

cv.waitKey(0)
cv.destroyAllWindows()
